#!/bin/bash

# 打开Maxwell配置文件脚本

echo "=== 打开Maxwell配置文件 ==="
echo "时间: $(date)"
echo ""

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 常见的Maxwell安装路径
MAXWELL_PATHS=(
    "/opt/module/maxwell"
    "/opt/software/maxwell"
    "/usr/local/maxwell"
    "/home/$USER/maxwell"
    "/opt/maxwell"
)

# 常见的配置文件名称
CONFIG_FILES=(
    "config.properties"
    "maxwell.properties"
    "application.properties"
    "maxwell-config.properties"
)

# 查找Maxwell安装目录
find_maxwell_home() {
    echo -e "${BLUE}查找Maxwell安装目录...${NC}"
    
    for path in "${MAXWELL_PATHS[@]}"; do
        if [ -d "$path" ]; then
            echo -e "${GREEN}✓ 找到Maxwell目录: $path${NC}"
            MAXWELL_HOME="$path"
            return 0
        fi
    done
    
    # 使用find命令查找
    echo "使用find命令查找Maxwell目录..."
    FOUND_PATH=$(find /opt /home /usr/local -name "maxwell" -type d 2>/dev/null | head -1)
    
    if [ -n "$FOUND_PATH" ]; then
        echo -e "${GREEN}✓ 找到Maxwell目录: $FOUND_PATH${NC}"
        MAXWELL_HOME="$FOUND_PATH"
        return 0
    else
        echo -e "${RED}✗ 未找到Maxwell安装目录${NC}"
        return 1
    fi
}

# 查找配置文件
find_config_file() {
    echo -e "${BLUE}查找Maxwell配置文件...${NC}"
    
    if [ -z "$MAXWELL_HOME" ]; then
        echo -e "${RED}✗ 未设置Maxwell安装目录${NC}"
        return 1
    fi
    
    for config_file in "${CONFIG_FILES[@]}"; do
        if [ -f "$MAXWELL_HOME/$config_file" ]; then
            echo -e "${GREEN}✓ 找到配置文件: $MAXWELL_HOME/$config_file${NC}"
            CONFIG_FILE="$MAXWELL_HOME/$config_file"
            return 0
        fi
    done
    
    # 查找配置文件
    echo "使用find命令查找配置文件..."
    FOUND_CONFIG=$(find "$MAXWELL_HOME" -name "*.properties" -type f 2>/dev/null | head -1)
    
    if [ -n "$FOUND_CONFIG" ]; then
        echo -e "${GREEN}✓ 找到配置文件: $FOUND_CONFIG${NC}"
        CONFIG_FILE="$FOUND_CONFIG"
        return 0
    else
        echo -e "${YELLOW}⚠ 未找到配置文件，将创建新配置文件${NC}"
        CONFIG_FILE="$MAXWELL_HOME/config.properties"
        return 0
    fi
}

# 显示配置文件内容
show_config_content() {
    echo -e "${BLUE}显示配置文件内容:${NC}"
    echo "----------------------------------------"
    
    if [ -f "$CONFIG_FILE" ]; then
        cat "$CONFIG_FILE"
    else
        echo -e "${YELLOW}配置文件不存在，将创建新配置文件${NC}"
    fi
    echo "----------------------------------------"
}

# 选择编辑器
select_editor() {
    echo -e "${BLUE}选择编辑器:${NC}"
    echo "1. vi (推荐)"
    echo "2. vim"
    echo "3. nano (更友好)"
    echo "4. 仅查看，不编辑"
    echo ""
    
    read -p "请选择编辑器 (1-4): " choice
    
    case $choice in
        1)
            EDITOR="vi"
            ;;
        2)
            EDITOR="vim"
            ;;
        3)
            EDITOR="nano"
            ;;
        4)
            EDITOR="view"
            ;;
        *)
            EDITOR="vi"
            ;;
    esac
}

# 打开配置文件
open_config_file() {
    echo -e "${BLUE}打开配置文件...${NC}"
    echo "配置文件: $CONFIG_FILE"
    echo "编辑器: $EDITOR"
    echo ""
    
    # 确保目录存在
    mkdir -p "$(dirname "$CONFIG_FILE")"
    
    # 如果文件不存在，创建基本配置
    if [ ! -f "$CONFIG_FILE" ]; then
        echo "创建基本配置文件..."
        cat > "$CONFIG_FILE" << 'EOF'
# Maxwell配置文件
# 创建时间: $(date)

# MySQL连接配置
host=192.168.10.102
port=3306
user=maxwell
password=maxwell

# Maxwell数据库配置
schema_database=maxwell

# 输出配置 - Kafka
producer=kafka
kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
kafka_topic=maxwell

# 输出格式
output_type=json

# 过滤配置 - 只监控smart_tour数据库
filter=include:smart_tour.*

# 初始化位置配置
init_position=auto

# 日志配置
log_level=info
EOF
        echo -e "${GREEN}✓ 基本配置文件已创建${NC}"
    fi
    
    # 打开文件
    echo "正在打开配置文件..."
    $EDITOR "$CONFIG_FILE"
    
    echo ""
    echo -e "${GREEN}✓ 配置文件编辑完成${NC}"
}

# 显示帮助信息
show_help() {
    echo "使用方法: $0 [选项]"
    echo ""
    echo "选项:"
    echo "  -h, --help     显示帮助信息"
    echo "  -c, --create   创建新配置文件"
    echo "  -v, --view     仅查看配置文件"
    echo "  -e, --editor   指定编辑器"
    echo ""
    echo "示例:"
    echo "  $0                    # 交互式打开配置文件"
    echo "  $0 -v                 # 仅查看配置文件"
    echo "  $0 -c                 # 创建新配置文件"
    echo "  $0 -e nano            # 使用nano编辑器"
}

# 主函数
main() {
    case "$1" in
        -h|--help)
            show_help
            exit 0
            ;;
        -c|--create)
            echo "创建新配置文件..."
            find_maxwell_home && find_config_file && open_config_file
            ;;
        -v|--view)
            echo "仅查看配置文件..."
            find_maxwell_home && find_config_file && show_config_content
            ;;
        -e|--editor)
            if [ -n "$2" ]; then
                EDITOR="$2"
                find_maxwell_home && find_config_file && open_config_file
            else
                echo -e "${RED}错误: 请指定编辑器${NC}"
                exit 1
            fi
            ;;
        "")
            # 交互式模式
            find_maxwell_home && find_config_file && show_config_content && select_editor && open_config_file
            ;;
        *)
            echo -e "${RED}错误: 未知选项 '$1'${NC}"
            show_help
            exit 1
            ;;
    esac
}

# 执行主函数
main "$@" 